OS. 簡単なSTAAD.Proマクロ
この例では、STAAD.Pro内で使用できる小規模なマクロを示します。
プログラミングを学ぶときは、アプリケーション、モジュール、または関数の基本的な構造がわかるような簡単なプログラムから始めるのが一般的です。これには、"Hello World"というフレーズのメッセージを画面に表示するプログラムがよく使用されます。この例では、これを拡張して、実用的な用途の基礎も含めます。
- STAAD.Proを開きます。
-
「ユーティリティ」リボンタブで、「開発者」グループの「マクロ」ツールを選択します。
「マクロ」ダイアログが開きます。 -
「新規作成」をクリックします。
「新規マクロファイル名」ダイアログが開きます。 - タイトルを「CreateNewView.vbs」と入力し、説明を「Creates a new view from the selected beams」と入力します。 STAAD.Pro Script Editorウィンドウが開き、Mainというタイトルのサブルーチンが表示されます。
-
説明のコメント行のすぐ後に次のように入力します。
Dim objOpenSTAAD As Object Dim SelBeamsNo As Long Dim SelBeams() As Long
これは、このプログラムで使用されるいくつかのオブジェクトと変数の宣言を提供するために使用されます。
-
次の行を入力して、OpenSTAADオブジェクトをインスタンス化します。
'Launch the OpenSTAAD Object Set objOpenSTAAD = GetObject(,"StaadPro.OpenSTAAD")
-
次の行を入力して、ビームが選択されているかを確認する論理チェックを設定します。
'Get no. of selected beams SelBeamsNo = objOpenSTAAD.Geometry.GetNoOfSelectedBeams If (SelBeamsNo > 0) Then
ここでは、OpenSTAADのGetNoOfSelectedBeams Geometry関数をテストに使用しています。このテストはif… then… else…文になっていて、以降の手順に続きがあります。
-
次の行を入力して、文がtrueの場合(つまり、少なくとも1つのビームが選択されている場合)に実行する内容をプログラムに指示します。
具体的には、OpenSTAADのCreateNewViewForSelection View関数を使用してアクティブな選択範囲から新しいビューを作成します。
ReDim SelBeams(SelBeamsNo) As Long 'Create a new view objOpenSTAAD.View.CreateNewViewForSelections
-
次の行を入力します。
このマクロがビームが選択されていない状態で実行されたときのために、ここで次の行を使用してフィードバックのメッセージをユーザーに提供することができます。
Else MsgBox "No beams are currently selected.", vbOkOnly End If
-
次の文を入力して、OpenSTAADオブジェクトのインスタンスを閉じます。
Set objOpenSTAAD = Nothing
マクロの作成に必要なのはこれだけです。この例は、言うまでもなく、実際にはSTAAD.Proで「新規ビュー」ツールを選択する機能を複製したものにすぎません。ただし、OpenSTAADの他の関数を組み合わせることで、よく使用される一連の機能を自動化し、独自の時短ツールを簡単に作成することができます。
この例では、簡潔にするために、選択についてチェックするモデルエンティティがビームだけになっています(つまり、ビーム要素が選択されている場合にのみ新しいビューが作成されます)。これをノード、プレート、ソリッドなどに簡単に拡張することができます。
例
このマクロの完全なコードは次のとおりです。
Sub Main()
'DESCRIPTION:Creates a new view from the selected beams.
Dim objOpenSTAAD As Object
Dim SelBeamsNo As Long
Dim SelBeams() As Long
'Launch OpenSTAAD Object
Set objOpenSTAAD = GetObject(,"StaadPro.OpenSTAAD")
'Get no. of selected beams
SelBeamsNo = objOpenSTAAD.Geometry.GetNoOfSelectedBeams
If (SelBeamsNo > 0) Then
ReDim SelBeams(SelBeamsNo) As Long
'Create a new view
objOpenSTAAD.View.CreateNewViewForSelections 'SelBeams
Else
MsgBox "No beams are currently selected.", vbOkOnly
End If
Set objOpenSTAAD = Nothing
End Sub